Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In many cases, software applications are designed to interact with other software applications or other computer systems. In some cases, software application may be used to simulate the results of an action or implementation. For example, in database systems, query optimizers may be used against a simulated distributed database as if it were a regular (single-site) database. The simulation may allow a user to see how the queries would run against the database as if it were a distributed system. Parallel query optimizers may be used to process queries in the “what-if” mode to determine how the queries may be executed on a distributed system. Such “what-if” optimizations are often very time-intensive and tend to consume large amounts of computer resources.